/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dao;

import com.interfaces.IInmueble;
import com.modelo.Ciudad;
import com.modelo.Inmueble;
import com.modelo.Usuario;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 *
 * @author Seysame
 */
public class InmuebleDAO extends HibernateDaoSupport implements IInmueble{

    @Override
    public List<Inmueble> listarInmuebles() {
      return this.getHibernateTemplate().find("from Inmueble");
    }

    @Override
    public Inmueble buscarInmueble(Inmueble inmueble) {
      
       Query query =this.getSession().createQuery("from Inmueble where id_inmueble = :id ");
       query.setParameter("id",inmueble.getIdInmueble());
       List<Inmueble>listado = query.list();
   
      
     if(listado.isEmpty()){
     return null;
     }else{
     return listado.get(0);
     }
    }

    @Override
    public Inmueble registrarInmueble(Inmueble inmueble) {
        
       this.getHibernateTemplate().saveOrUpdate(inmueble);
       return inmueble;
    }

    @Override
    public Inmueble modificarInmueble(Inmueble inmueble) {
        this.getHibernateTemplate().saveOrUpdate(inmueble);
        return buscarInmueble(inmueble);
    }

    @Override
    public List<Inmueble> listarInmueblesPorDueño(Usuario dueño) {
     Query query = this.getSession().createQuery("from Inmueble where id_usuario = :id ");
     query.setParameter("id",dueño.getIdUsuario());
     List<Inmueble>listado = query.list();
     return listado;
    
    
    }

    @Override
    public List<Inmueble> listarInmueblePorTitulo(Inmueble inmueble) {
     Query query = this.getSession().createQuery("from Inmueble where titulo like :id ");
     query.setParameter("id","%"+inmueble.getTitulo()+"%");
     List<Inmueble>listado = query.list();
     return listado;
    }

    @Override
    public List<Inmueble> listarInmueblePorCiudad(Ciudad ciudad) {
     Query query = this.getSession().createQuery("from Inmueble where id_ciudad = :id ");
     query.setParameter("id",ciudad.getIdCiudad());
     List<Inmueble>listado = query.list();
     return listado; 
    }
    
}
